#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/face.hpp>
#include <opencv2/face/facerec.hpp>
#include <opencv2/freetype.hpp>
#include "opencv2/highgui/highgui.hpp"
#include "opencv/cv.h"
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <QTimer>
#include <QDebug>
using namespace cv;//OpenCV的命名空间！
using namespace std;
using namespace face;
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();


    struct shenfen{

       int shenfen_index;
       string shenfen_name;
    };



private slots:
    void openCamara(); //打开摄像头
    void closeCamara();//关闭摄像头
    void takingPicture();//拍照
    void renlianxunlian();//人脸训练
    void time_out();
    void closed();
    void luru();



private:
    Ui::Widget *ui;
    QImage  *imag;
    IplImage *frame; //申请IplImage类型指针，申请空间
     QTimer tim;//定时器 33ms取一次数据

    VideoCapture cap;//代表着摄像头！
    QImage Mat2QImage(cv::Mat cvImg);
    CascadeClassifier facedector;//人脸识别分类器
    CascadeClassifier eyedector;//眼睛识别分类器
    Ptr<LBPHFaceRecognizer> model;//LBP模式学习变量
    vector<Mat> study_faces;//人脸原始数据
    vector<int> study_index;//人脸的索引号
    Ptr<freetype::FreeType2> ft2;
         int luru_i;//序号
         string name;//姓名
         int renshu=0;//人数
         shenfen shenfenzu[10]; //10个人
};
#endif // WIDGET_H
